package membresia.em.membro;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import membresia.bean.membro.OperadoraTelefonia;
import membresia.service.Service;

public class OperadoraTelefoniaEm {

	/**
	 * Método que persiste um objeto OperadoraTelefonia no Banco
	 */
	public static void cadastraOperadoraTelefonia(OperadoraTelefonia p) {
		// persiste no banco de dados
		EntityManager em = Service.getEntityManagerFactory();
		em.getTransaction().begin();
		em.persist(p);
		em.flush();
		em.getTransaction().commit();
		em.close();

	}

	/**
	 * Método que Atualiza um Objeto OperadoraTelefonia
	 */
	public static void atualizaOperadoraTelefonia(OperadoraTelefonia p) {
		// persiste no banco de dados
		EntityManager em = Service.getEntityManagerFactory();
		em.getTransaction().begin();
		em.merge(p);
		em.flush();
		em.getTransaction().commit();
		em.close();
	}

	/**
	 * Método busca uma OperadoraTelefonia pelo ID
	 * 
	 * @return OperadoraTelefonia
	 */
	public static OperadoraTelefonia findById(int id) {
		EntityManager em = Service.getEntityManagerFactory();
		em.getTransaction().begin();
		OperadoraTelefonia p = em.find(OperadoraTelefonia.class, id);
		em.getTransaction().commit();
		em.close();
		return p;
	}

	/**
	 * Método que lista todas as OperadoraTelefonias
	 */
	@SuppressWarnings("unchecked")
	public static List<OperadoraTelefonia> findAll() {
		EntityManager em = Service.getEntityManagerFactory();
		em.getTransaction().begin();
		Query q = em.createQuery("select p from OperadoraTelefonia p ");
		List<OperadoraTelefonia> OperadoraTelefonias = q.getResultList();
		em.flush();
		em.getTransaction().commit();
		em.close();
		return OperadoraTelefonias;
	}

	/**
	 * Método que lista todas as OperadoraTelefonias
	 */
	@SuppressWarnings("unchecked")
	public static List<OperadoraTelefonia> findByNome(String nome) {
		EntityManager em = Service.getEntityManagerFactory();
		em.getTransaction().begin();
		Query q = em.createQuery("select p from OperadoraTelefonia p where p.descricao like '%"
				+ nome + "%'");
		List<OperadoraTelefonia> OperadoraTelefonias = q.getResultList();
		em.flush();
		em.getTransaction().commit();
		em.close();
		return OperadoraTelefonias;
	}

	/**
	 * Método de Exclusão de OperadoraTelefonia
	 */
	public static void excluirOperadoraTelefonia(int id) {
		// exclui uma OperadoraTelefonia por id
		OperadoraTelefonia OperadoraTelefonia = findById(id);
		// excluir a OperadoraTelefonia
		EntityManager em = Service.getEntityManagerFactory();
		em.getTransaction().begin();
		em.remove(em.getReference(OperadoraTelefonia.class, OperadoraTelefonia.getId()));
		em.flush();
		em.getTransaction().commit();
		em.close();
	}

}